package cn.itsource.basic.listener;

import cn.itsource.basic.annotation.PreAuthorize;
import cn.itsource.basic.service.IPermissionScanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.util.HashSet;
import java.util.Set;

/*
*
* 自定义监听器 在项目启动时扫描自定义注解
* */
@WebListener
@Slf4j
public class PermissionScanListener implements ServletContextListener {


    @Autowired
    private IPermissionScanService permissionScanService;

    /*
    * 容器初始化以后会执行的方法
    * */
    @Override
    public void contextInitialized(ServletContextEvent sce) {

        //因为这个方法是在启动线程中执行的 如果报错 或者 消耗的时间太长
        // 会影响我们项目启动 所以我们要单独开一个线程来完成扫描工作

        new Thread(new Runnable() {
            @Override
            public void run() {
                //扫描自定义的注解 并且把注解里面的属性值放到数据库permisson表中
                log.info("权限扫描开始=====================》");
                permissionScanService.scanPermission();
                log.info("权限扫描结束=====================》");
            }
        }).start();

    }
}
